package com.piggy.logi.sys.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.piggy.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;

/**
 * 运单信息分页查询对象 logi_waybill
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel("运单信息分页查询对象")
public class LogiWaybillQueryBo extends BaseEntity {

	@ApiModelProperty("运单编号")
	private String outCode;

	@ApiModelProperty("原运单编号")
	private String oldOutCode;

	@ApiModelProperty(value = "退单(0运单1退单)")
	private Integer refund = 0;

	@ApiModelProperty("发货网点ID")
	private Integer shipNetId;

	@ApiModelProperty("运单状态")
	private Integer status;

	@ApiModelProperty("发货方计划发货时间")
	private String shipPlanTimeStr;

	@ApiModelProperty("创建时间")
	private String createTimeStr;

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("发货方计划开始时间")
	private Date shipPlanTimeStart;

	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty("发货方计划结束时间")
	private Date shipPlanTimeStartEnd;

	@ApiModelProperty("运单状态列表多个")
	private List<Integer> statusList;

	@ApiModelProperty("运单不在状态列表")
	private List<Integer> notStatusList;

	@ApiModelProperty("调度状态列表多个")
	private List<Integer> scheduleList;

	@ApiModelProperty("短驳状态列表多个")
	private List<Integer> drayageList;

	@ApiModelProperty("调度编号")
	private String scheduleNo;

	@ApiModelProperty("短驳编号")
	private String drayageNo;

	/** 发货方ID */
	@ApiModelProperty("发货方ID")
	@JsonFormat(shape = JsonFormat.Shape.STRING)
	private Integer shipId;

	@ApiModelProperty("开票状态：0.未开票 1.已开票 2.开票失败 3.暂不开票")
	private Integer invoiceStatus;

	/** 是否控货（0否1是） */
	@ApiModelProperty("是否控货（0否1是）")
	private Integer cargoControl;

	/** 运单可用状态(0 可用 1 不可用) */
	@ApiModelProperty("运单可用状态(0 可用 1 不可用)")
	private Integer enableStatus;

	/** 控货状态 (1 确认控货 2 放货) */
	@ApiModelProperty("控货状态 (1 确认控货 2 放货)")
	private Integer cargoControlStatus;

	/** 客户名称 */
	@ApiModelProperty("客户名称")
	private String customerName;

}
